1. Field of the Invention
The present invention relates to a software failure test framework by which arbitrary routines may be executed in reaction to specific events for analysis and testing.
2. Background of the Prior Art
Software quality control is a necessary task in order to provide software that properly performs its designed functions. One important aspect of software quality control is functional testing. Functional testing exercises the operation of the software under relatively realistic operating conditions. In order to provide a thorough and realistic test, the software must be tested not only under normal operating conditions, but also under conditions in which errors occur.
Previously, in order to emulate particular runtime situations for functional testing, for example, as in the case of third-party failure, it was necessary to implement intrusive techniques such as creating special test builds of the software being tested, in which these error simulations are introduced into the software itself. This technique is not only threatening to the software development process, it is generally not sufficiently effective at recreating an accurate simulation. For example, where interaction with distributed and third party software is needed, but the source code for such software is not available, error simulations of such software may not be sufficiently accurate for testing purposes.
Another approach is to mock out certain aspects of the system. However, this takes away any potentially unexpected behavior of the actual, practical system involved and also relies on the accuracy of third-party systems implementations of specifications, both of which may not be sufficient in critical real life solutions. A need arises for a technique by which arbitrary routines may be executed in reaction to specific events for analysis and testing, while avoiding the need to manipulate the actual code being monitored. This would provide the capability to accurately model failure scenarios, while avoiding the need for special test builds of the software under test. Such a technique would be useful in many scenarios, such as transactional processing failure and recovery and security.